﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using AdminCondominio.Persistencia;
using AdminCondominio.Dominio;

namespace AdminCondominio.Pruebas
{

    [TestFixture]
    public class TestResidenteDAO
    {
        private ResidenteDAO residenteDAO = new ResidenteDAO();
        [Test]
        public void TestCrear()
        {

            Residente nuevoResidente = new Residente();

            nuevoResidente.NuDocumento = "123456";
            nuevoResidente.NoResidente = "Alex T";
            nuevoResidente.FeNacimiento = new DateTime(2002, 7, 16);
            nuevoResidente.NoCorreo = "alext@gmail.com";
            nuevoResidente.TxClave = "2233";
            if (residenteDAO.obtener(nuevoResidente.NuDocumento) == null)
            {
                Assert.DoesNotThrow(delegate
                {
                    residenteDAO.crear(nuevoResidente);
                });
            }
            else
            {
                Assert.Catch<Exception>(delegate
                {
                    residenteDAO.crear(nuevoResidente);
                });
                
            }


        }
        [Test]
        public void TestObtener()
        {
            String NuDocumento = "123456";
            Residente residenteObtenido = residenteDAO.obtener(NuDocumento);
            Assert.NotNull(residenteObtenido);
            Assert.AreEqual(NuDocumento, residenteObtenido.NuDocumento);
        }
        [Test]
        public void TestModificar()
        {
            Residente residenteModificar = new Residente();
            residenteModificar.NuDocumento = "123456";
            residenteModificar.NoResidente = "Alex tomaylla";
            residenteModificar.FeNacimiento = new DateTime(2011, 6, 22);
            residenteModificar.NoCorreo = "alext@gmail.com";
            residenteModificar.TxClave = "12345";
            if (residenteDAO.obtener(residenteModificar.NuDocumento) != null)
            {
                if (residenteDAO.ObtenerResidenteConCorreoRepetido(residenteModificar.NuDocumento, residenteModificar.NoCorreo) == null)
                {
                    Assert.DoesNotThrow(delegate
                    {
                        residenteDAO.modificar(residenteModificar);
                    });
                }
            }
            // Assert.AreEqual(residenteModificar.NoCorreo, residenteObtenido.NoCorreo);       
        }
        [Test]
        public void TestEliminar()
        {
            Residente residenteEliminar = new Residente();
            residenteEliminar.NuDocumento = "123456";
            Assert.DoesNotThrow(delegate
            {
                residenteDAO.eliminar(residenteEliminar);
            });
        }
        [Test]
        public void TestListar()
        {
            String noresidente = null;
            List<Residente> ListaResidente = new List<Residente>();
              ListaResidente = residenteDAO.ListarResidente(noresidente);
             Assert.IsNotNull(ListaResidente);
             Assert.GreaterOrEqual(ListaResidente.Count,0); 
        }
    }
}